home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / t / pragma / constant.t next >
Text File  |  1998-07-19  |  3KB  |  142 lines

  1. #!./perl
  2.  
  3. BEGIN {
  4.     chdir 't' if -d 't';
  5.     @INC = '../lib' if -d '../lib';
  6. }
  7.  
  8. BEGIN {$^W |= 1}        # Insist upon warnings
  9. use vars qw{ @warnings };
  10. BEGIN {                # ...and save 'em for later
  11.     $SIG{'__WARN__'} = sub { push @warnings, @_ }
  12. }
  13. END { print @warnings }
  14.  
  15. ######################### We start with some black magic to print on failure.
  16.  
  17. BEGIN { $| = 1; print "1..39\n"; }
  18. END {print "not ok 1\n" unless $loaded;}
  19. use constant;
  20. $loaded = 1;
  21. #print "# Version: $constant::VERSION\n";
  22. print "ok 1\n";
  23.  
  24. ######################### End of black magic.
  25.  
  26. use strict;
  27.  
  28. sub test ($$;$) {
  29.     my($num, $bool, $diag) = @_;
  30.     if ($bool) {
  31.     print "ok $num\n";
  32.     return;
  33.     }
  34.     print "not ok $num\n";
  35.     return unless defined $diag;
  36.     $diag =~ s/\Z\n?/\n/;            # unchomp
  37.     print map "# $num : $_", split m/^/m, $diag;
  38. }
  39.  
  40. use constant PI        => 4 * atan2 1, 1;
  41.  
  42. test 2, substr(PI, 0, 7) eq '3.14159';
  43. test 3, defined PI;
  44.  
  45. sub deg2rad { PI * $_[0] / 180 }
  46.  
  47. my $ninety = deg2rad 90;
  48.  
  49. test 4, $ninety > 1.5707;
  50. test 5, $ninety < 1.5708;
  51.  
  52. use constant UNDEF1    => undef;    # the right way
  53. use constant UNDEF2    =>    ;    # the weird way
  54. use constant 'UNDEF3'        ;    # the 'short' way
  55. use constant EMPTY    => ( )  ;    # the right way for lists
  56.  
  57. test 6, not defined UNDEF1;
  58. test 7, not defined UNDEF2;
  59. test 8, not defined UNDEF3;
  60. my @undef = UNDEF1;
  61. test 9, @undef == 1;
  62. test 10, not defined $undef[0];
  63. @undef = UNDEF2;
  64. test 11, @undef == 0;
  65. @undef = UNDEF3;
  66. test 12, @undef == 0;
  67. @undef = EMPTY;
  68. test 13, @undef == 0;
  69.  
  70. use constant COUNTDOWN    => scalar reverse 1, 2, 3, 4, 5;
  71. use constant COUNTLIST    => reverse 1, 2, 3, 4, 5;
  72. use constant COUNTLAST    => (COUNTLIST)[-1];
  73.  
  74. test 14, COUNTDOWN eq '54321';
  75. my @cl = COUNTLIST;
  76. test 15, @cl == 5;
  77. test 16, COUNTDOWN eq join '', @cl;
  78. test 17, COUNTLAST == 1;
  79. test 18, (COUNTLIST)[1] == 4;
  80.  
  81. use constant ABC    => 'ABC';
  82. test 19, "abc${\( ABC )}abc" eq "abcABCabc";
  83.  
  84. use constant DEF    => 'D', "\x45", chr 70;
  85. test 20, "d e f @{[ DEF ]} d e f" eq "d e f D E F d e f";
  86.  
  87. use constant SINGLE    => "'";
  88. use constant DOUBLE    => '"';
  89. use constant BACK    => '\\';
  90. my $tt = BACK . SINGLE . DOUBLE ;
  91. test 21, $tt eq q(\\'");
  92.  
  93. use constant MESS    => q('"'\\"'"\\);
  94. test 22, MESS eq q('"'\\"'"\\);
  95. test 23, length(MESS) == 8;
  96.  
  97. use constant TRAILING    => '12 cats';
  98. {
  99.     my $save_warn;
  100.     local $^W;
  101.     BEGIN { $save_warn = $^W; $^W = 0 }
  102.     test 24, TRAILING == 12;
  103.     BEGIN { $^W = $save_warn }
  104. }
  105. test 25, TRAILING eq '12 cats';
  106.  
  107. use constant LEADING    => " \t1234";
  108. test 26, LEADING == 1234;
  109. test 27, LEADING eq " \t1234";
  110.  
  111. use constant ZERO1    => 0;
  112. use constant ZERO2    => 0.0;
  113. use constant ZERO3    => '0.0';
  114. test 28, ZERO1 eq '0';
  115. test 29, ZERO2 eq '0';
  116. test 30, ZERO3 eq '0.0';
  117.  
  118. {
  119.     package Other;
  120.     use constant PI    => 3.141;
  121. }
  122.  
  123. test 31, (PI > 3.1415 and PI < 3.1416);
  124. test 32, Other::PI == 3.141;
  125.  
  126. use constant E2BIG => $! = 7;
  127. test 33, E2BIG == 7;
  128. # This is something like "Arg list too long", but the actual message
  129. # text may vary, so we can't test much better than this.
  130. test 34, length(E2BIG) > 6;
  131. test 35, index(E2BIG, " ") > 0;
  132.  
  133. test 36, @warnings == 0, join "\n", "unexpected warning", @warnings;
  134. @warnings = ();        # just in case
  135. undef &PI;
  136. test 37, @warnings &&
  137.     ($warnings[0] =~ /Constant sub.* undefined/),
  138.     shift @warnings;
  139.  
  140. test 38, @warnings == 0, "unexpected warning";
  141. test 39, $^W & 1, "Who disabled the warnings?";
  142.